import pathlib
from pydantic import ConfigDict
from pydantic_settings import BaseSettings

# 定义项目根目录，基于当前文件所在路径向上回溯两级
root = pathlib.Path(__file__).parents[1]
# 设置环境变量文件路径，假定.env文件位于项目根目录下
env_file = root / '.env'

# 定义应用配置类，继承自BaseSettings以支持从环境变量加载配置
class Settings(BaseSettings):
    # 项目根目录路径
    project_root: pathlib.Path = root
    # 应用密钥，用于加密或签名等安全操作，默认为空字符串
    secret: str = ""
    # 数据库连接URI，默认使用SQLite数据库
    db_uri: str = "sqlite+pysqlite:///app.db"
    # 令牌认证的URL路径，默认为/auth/login
    token_url: str = "/auth/login"
    # 配置模型的额外设定，指定环境变量文件位置
    model_config = ConfigDict(env_file=str(env_file))


# 实例化配置类，从已定义的.env文件加载环境变量
Config = Settings(_env_file=env_file)